package cn.topevery.garden.entity.po;

import cn.topevery.garden.framework.base.BaseEntity;
import com.alibaba.fastjson.annotation.JSONField;
import hw.topevery.framework.annotation.DbTable;
import hw.topevery.framework.annotation.DbTableField;
import hw.topevery.framework.enums.DbTypeEnum;
import lombok.Data;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 
 *
 * @author code-generate
 * @date 2021-09-24
 */
@Data
@DbTable(tableName = "t_dingtalk_user_attendance_result")
public class DingtalkUserAttendanceResult extends BaseEntity {
        /**
     * 打卡记录id
     */
    @DbTableField(columnName = "c_record_id", dbType = DbTypeEnum.BIGINT)
    public Long recordId ;

    /**
     * 钉钉用户id
     */
    @DbTableField(columnName = "c_user_id", dbType = DbTypeEnum.VARCHAR)
    public String userId ;

    /**
     * 工作日
     */
    @DbTableField(columnName = "c_work_date", dbType = DbTypeEnum.DATE)
    public LocalDate workDate ;

    /**
     * 考勤类型：		            OnDuty：上班		            OffDuty：下班
     */
    @DbTableField(columnName = "c_check_type", dbType = DbTypeEnum.VARCHAR)
    public String checkType ;

    /**
     * 计算迟到和早退，基准时间
     */
    @DbTableField(columnName = "c_base_check_time", dbType = DbTypeEnum.TIMESTAMP)
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    public LocalDateTime baseCheckTime ;

    /**
     * 实际打卡时间, 用户打卡时间的毫秒数。
     */
    @DbTableField(columnName = "c_user_check_time", dbType = DbTypeEnum.TIMESTAMP)
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    public LocalDateTime userCheckTime ;

    /**
     * 位置结果：		            Normal：范围内		            Outside：范围外		            NotSigned：未打卡
     */
    @DbTableField(columnName = "c_location_result", dbType = DbTypeEnum.VARCHAR)
    public String locationResult ;

    /**
     * 打卡结果：		            Normal：正常		            Early：早退		            Late：迟到		            SeriousLate：严重迟到		            Absenteeism：旷工迟到		            NotSigned：未打卡
     */
    @DbTableField(columnName = "c_time_result", dbType = DbTypeEnum.VARCHAR)
    public String timeResult ;

    /**
     * 排班id
     */
    @DbTableField(columnName = "c_plan_id", dbType = DbTypeEnum.BIGINT)
    public Long planId ;

    /**
     * 考勤组id
     */
    @DbTableField(columnName = "c_group_id", dbType = DbTypeEnum.BIGINT)
    public Long groupId ;

    /**
     * 数据来源：		            ATM：考勤机打卡（指纹/人脸打卡）		            BEACON：IBeacon		            DING_ATM：钉钉考勤机（考勤机蓝牙打卡）		            USER：用户打卡		            BOSS：老板改签		            APPROVE：审批系统		            SYSTEM：考勤系统		            AUTO_CHECK：自动打卡
     */
    @DbTableField(columnName = "c_source_type", dbType = DbTypeEnum.VARCHAR)
    public String sourceType ;

    /**
     * 关联的审批实例ID，当该字段非空时，表示打卡记录与请假、加班等审批有关。可以与获取审批实例详情配合使用
     */
    @DbTableField(columnName = "c_proc_inst_id", dbType = DbTypeEnum.VARCHAR)
    public String procInstId ;

    /**
     * 关联的审批ID，当该字段非空时，表示打卡记录与请假、加班等审批有关。
     */
    @DbTableField(columnName = "c_approve_id", dbType = DbTypeEnum.BIGINT)
    public Long approveId ;


}
